8.3. Linux-3.13.3

El paquete Linux contiene el núcleo de Linux.

Tiempo aproximado de construcción: 3.0 - 49.0 SBU (typically about 6 SBU)
Espacio requerido en disco: 700 - 6800 MB (typically about 800-900 MB)

8.3.1. Instalación del kernel

Construir el núcleo comprende varios pasos:—configuración, compilación e instalación. Lea el archivo README en el árbol de fuentes del núcleo para métodos alternativos a la forma en que este manual se configura el kernel.

Prepara la compilación ejecutando el siguiente comando:

make mrproper

Esto asegura que el árbol del núcleo está absolutamente limpio. El equipo de desarrollo recomienda usar este comando antes de cada compilación del kernel. No confíe en que el árbol de las fuentes esté limpio tras desempaquetarlo.

Configura el núcleo mediante una interfaz basada en menús. Para obtener información general sobre la configuración del kernel ver http://www.linuxfromscratch.org/hints/downloads/files/kernel-configuration.txt. BLFS tiene información sobre requisitos particulares de configuraciones del núcleo para paquetes externos a LFS en http://www.linuxfromscratch.org/blfs/view/svn/longindex.html#kernel-config-index. Información adicional sobre la configuración y la construcción del kernel se puede encontrar en http://www.kroah.com/lkn/

[Note]

Nota

Un buen punto de partida para el establecimiento de la configuración del núcleo es ejecutarmake defconfig. Esto establecerá la configuración básica para un buen estado que tiene en cuenta la arquitectura de tu sistema actual.

Debido a los cambios recientes en udev, asegúrese de seleccionar:

Device Drivers  --->
  Generic Driver Options  --->
     Maintain a devtmpfs filesystem to mount at /dev
make LANG=<host_LANG_value> LC_ALL= menuconfig

El significado de los parámetros de make:

LANG=<host_LANG_value> LC_ALL=

Esto establece la configuración local a la utilizada en el host. Esto es necesario para un adecuado menuconfig de ncurses line interface basándose en UTF-8 linux text console.

Asegúrate de reemplazar <host_LANG_value>por el valor de la variable $LANG de tu anfitrión. Si no estuviere establecido, se puede usar en su lugar el valor de $LC_ALL o $LC_CTYPE del anfitrión.

Alternativamente, puede ser más apropiado en algunas situaciones. Consulte el archivo README para más información.

Si lo deseas, sáltate la configuración del núcleo copiando el fichero de configuración del kernel .config, de tu sistema anfitrión (asumiendo que esté disponible) al directorio de desempaquetado linux-3.13.3 Sin embargo, no recomendamos esta opción. Con frecuencia es mejor explorar todos los menús de configuración y crear la configuración del núcleo desde cero.

Compila la imagen del núcleo y los módulos:

make

Si utilizas los módulos del kernel, en /etc/modprobe.dpuede ser necesaria la configuración del módulo. Información relativa a los módulos y la configuración del núcleo se encuentran en Section 7.4, “Device and Module Handling on an LFS System” y en la documentación del núcleo en el directorio linux-3.13.3/Documentation . También pueden resultar de interés modprobe.conf(5).

Instale los módulos, si la configuración del núcleo los utiliza:

make modules_install

Después de que la compilación del kernel se haya completado, se requieren pasos adicionales para completar la instalación. Algunos archivos deben copiarse en el directorio /boot.

La ruta a la imagen del núcleo puede variar dependiendo de la plataforma que se utilice. El nombre del archivo a continuación se puede cambiar para adaptarse a su gusto, pero el centro del nombre del archivo debe ser vmlinuz para ser compatible con la configuración automática del proceso de arranque descrito en la siguiente sección. El siguiente comando asume que la arquitectura es x86:

cp -v arch/x86/boot/bzImage /boot/vmlinuz-3.13.3-lfs-7.5

System.map es un fichero de símbolos para el núcleo. Mapea los puntos de entrada de cada función en la API del núcleo, así como las direcciones de las estructuras de datos del núcleo para el núcleo en ejecución. Se utiliza como un recurso en la investigación de problemas en el núcleo. Emita el siguiente comando para instalar el fichero de mapa:

cp -v System.map /boot/System.map-3.13.3

El fichero de configuración del kernel .config producido por el paso make menuconfig anterior contiene todas las opciones de configuración del kernel que acaba de compilar. Es una buena idea guardar este fichero como referencia futura:

cp -v .config /boot/config-3.13.3

Instale la documentación del kernel Linux:

install -d /usr/share/doc/linux-3.13.3
cp -r Documentation/* /usr/share/doc/linux-3.13.3

Es importante tener en cuenta que los archivos en el directorio de fuentes del núcleo no son propiedad de root. Cada vez que un paquete sea desempaquetado como usuario root (como hacemos dentro del chroot), los archivos tienen los IDs de usuario y grupo que tenían en el ordenador del empaquetador. Esto normalmente no es un problema para cualquier otro paquete para que pueda ser instalado, porque el árbol de código fuente se elimina después de la instalación. Sin embargo, el árbol de las fuentes de Linux se guarda durante mucho Espacio requerido en disco. Debido a esto, existe la posibilidad de que cualquiera que sea el ID de usuario del empaquetador sea asignado a alguien en la máquina. Esa persona tendría entonces acceso de escritura a las fuentes del kernel.

Si va a conservarse el árbol de fuentes del núcleo, ejecute chown -R 0:0 sobre el directorio linux-3.13.3 para asegurar que todos los ficheros son propiedad del usuario root.

[Warning]

ATENCIÓN

Parte de la documentación del núcleo recomienda crear un enlace simbólico de /usr/src/linux apuntando al directorio de fuentes del núcleo. Esto es específico para núcleos anteriores a la serie 2.6 y no se debe crear en un sistema LFS, ya que puede causar problemas en los paquetes que puedes desear usar para construir una vez que tu sistema base LFS esté completo.

[Warning]

ATENCIÓN

Las cabeceras en el incluido directorio del sistema (/usr/include) deben siempre ser aquellas contra las que se compiló Glibc, es decir, las cabeceras saneadas instaladas en Section 6.7, “Linux-3.13.3 API Headers”. Por lo tanto, nunca deben ser sustituidas por cualquiera de las cabeceras primigenias del núcleo o cualquier otra cabecera saneada del núcleo .

8.3.2. Configuración del Módulo Linux de orden de carga

La mayoría del Espacio requerido en disco los módulos de Linux se cargan automáticamente, pero a veces se necesita un poco de dirección específica. El programa que carga módulos, modprobe o insmod, utiliza /etc/modprobe.d/usb.conf para este propósito. Este archivo tiene que ser creado de manera que si los controladores USB (ehci_hcd, ohci_hcd y uhci_hcd) se han construido como módulos, se carguen en el orden correcto; ehci_hcd necesita ser cargado antes de ohci_hcd y uhci_hcd a fin de evitar una salida de advertencia en el arranque.

Crea un nuevo fichero /etc/modprobe.d/usb.conf ejecutando lo siguiente:

install -v -m755 -d /etc/modprobe.d
cat > /etc/modprobe.d/usb.conf << "EOF"
# Begin /etc/modprobe.d/usb.conf

install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true
install uhci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i uhci_hcd ; true

# End /etc/modprobe.d/usb.conf
EOF

8.3.3. Contenido de Linux

Archivos instalados: config-3.13.3, vmlinuz-3.13.3-lfs-7.5, and System.map-3.13.3
Directorios de instalación: /lib/modules, /usr/share/doc/linux-3.13.3

Breves descripciones:

config-3.13.3

Contiene todas las opciones de configuración del kernel

vmlinuz-3.13.3-lfs-7.5

El motor del sistema Linux. Al encender el ordenador, el kernel es la primera parte del sistema operativo que se carga. Detecta e inicializa todos los componentes de hardware de la máquina, a continuación, hace que estos componentes se encuentren disponibles como un árbol de archivos en el software y convierte una CPU única en una máquina multi-tarea capaz de ejecutar concurrentemente varios programas casi al mismo Espacio requerido en disco.

System.map-3.13.3

Un listado de direcciones y símbolos; mapea los puntos de entrada y direcciones de todas las funciones y estructuras de datos del núcleo.